WPF Binding to a property of a static class
Binding to a property of a static class is quite straight forward.
The binding string looks like this:
{x:Static s:MyStaticClass.StaticValue2}
For an example do this:
- Create a new folder in your project called Statics.
- Add the following class to the Statics folder.
using System; namespace BindingToStaticClassExample.Statics { public static class MyStaticClass { static MyStaticClass() { Title = "Binding to properties of Static Classes"; StaticValue1 = "Test 1"; StaticValue2 = "Test 2"; StaticValue3 = "Test 3"; } public static String Title { get; set; } public static String StaticValue1 { get; set; } public static String StaticValue2 { get; set; } public static String StaticValue3 { get; set; } } }
- Add a reference to the BindingToStaticClassExample.Statics namespace. (See line 4.)
- Bind the title to the Title string value of MyStaticClass.
- Change the <Grid> to a <StackPanel> (not required just for ease of this example).
- Add TextBox elements and bind them to the two string values in MyStaticClass object.
<Window x:Class="BindingToStaticClassExample.MainWindow" xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" xmlns:s="clr-namespace:BindingToStaticClassExample.Statics" Title="{x:Static s:MyStaticClass.Title}" Height="350" Width="525"> <StackPanel> <TextBox Text="{x:Static s:MyStaticClass.StaticValue1}" /> <TextBox Text="{x:Static s:MyStaticClass.StaticValue2}" /> <!-- Not supported and won't work <TextBox> <TextBox.Text> <Binding Source="{x:Static s:MyStaticClass.StaticValue3}" /> </TextBox.Text> </TextBox> --> </StackPanel> </Window>
You now know how to bind to properties of a static class.